#!/usr/bin/env perl

#
# 获取起点数据的脚本
# 参数 : 
#   ./download_data.pl [down_load_id] [from_line] [to_line]
#    
#   其中， down_load_id : 是位本次下载定义的唯一标示， 也将是数据文件的名字
#          from_line    : 从 id 列表的第几行开始
#          to_line      : 发送到 id 列表的第几行
#
# 预计的数据量 100000 *0.5 M /1000 = 50G

use strict;
use Data::Dumper;


my $CMD_WGET = '/usr/bin/wget -q ';

# 当前的目录
my $CURRENT_PATH = `pwd`; chomp($CURRENT_PATH);

# id 列表文件
my $ID_LIST_FILE =  $CURRENT_PATH . "/meta/Lastest_100000_book_id";

my $USAGE    = qq(
 参数 : 
   ./download_data.pl [down_load_id] [from_line] [to_line]
   其中， down_load_id : 是位本次下载定义的唯一标示， 也将是数据文件的名字
          from_line    : 从 id 列表的第几行开始
          to_line      : 发送到 id 列表的第几行
);


my ($down_load_id, $from_line, $to_line) = @ARGV;

die $USAGE if ( !defined($down_load_id) || !defined ($from_line) || !defined ($to_line)) ;

# 创建log文件夹

`mkdir -p $CURRENT_PATH/logs/`;

open LOG_FILE, ">$CURRENT_PATH/logs/$down_load_id.log";

# 读取id列表
my $cmd  = "head -n " . $to_line . " " . $ID_LIST_FILE . " |tail -n " . ($to_line - $from_line);
my @data = `$cmd`;

foreach my $id (@data)
{ 
	chomp ($id);
	# 获取id的前两个字符	
	my $first2_id = substr($id, 0, 2);
	
	# 创建目录
	`mkdir -p $CURRENT_PATH/DATA/$first2_id/$id`;
	
	#下载文件
	`$CMD_WGET 'http://www.qidian.com/BookReader/$id.aspx' -O '$CURRENT_PATH/DATA/$first2_id/$id/INDEX_RAW'`;
	`$CMD_WGET 'http://download.qidian.com/pda/$id.txt' -O '$CURRENT_PATH/DATA/$first2_id/$id/DATA_RAW'`;
	# 检测文件是否存在
	if ( ! -f "$CURRENT_PATH/DATA/$first2_id/$id/INDEX_RAW" ) {
		print LOG_FILE "[$id] NO INDEX\n";
		next;
	}elsif ( ! -f "$CURRENT_PATH/DATA/$first2_id/$id/DATA_RAW" ) {
		print LOG_FILE "[$id] NO DATA\n";
		next;
	}else {
		print LOG_FILE "[$id] DONE\n"
	}

	

}

close LOG_FILE;
